package com.dyb.demo;


/**
 * @author dyb
 * @date 2019/1/17 14:22
 */
public class Test_vararg {
    /*
     * 可变参数
     *
     * */
    // 可变参数列表的值可以为任意多个
    // 下面的method方法非可变参数可以转型为可变参数， 低精度自动向高精度转型，造成参数混淆，编译器无法知道该调用哪一个方法
    // Error:(27, 9) java: 对method的引用不明确
    //  com.dyb.demo.Test_vararg 中的方法 method(java.lang.Character...) 和 com.dyb.demo.Test_vararg 中的方法 method(float,java.lang.Character...) 都匹配

    /*static void method(Character... c){
        System.out.println("first");
    }*/

    static void method(float f, Character... c) {
        System.out.println("f:" + f);
        for (Character character : c) {
            System.out.println("c:" + character);
        }
    }

    public static void main(String[] args) {
        method(1, 'a');
        method('a', 'b');
        long l = 9223372036854775807L;
        double f = l;
        System.out.println(f);

    }

    public void test() {
        // 低精度自动向高精度转型
        byte b = 1;
        short s = 2;
        int i = 3;
        long l = 4;
        float f = 5f;
        double d = 6;
        boolean bool = true;
        char c = 'c';
        s = b;
        i = s; i=c;
        l = i;
        f = l;
        d = f;
        /*
        byte<short<char<int<long<float<double
        基本类型：byte 二进制位数：8
        包装类：java.lang.Byte
        最小值：Byte.MIN_VALUE=-128
        最大值：Byte.MAX_VALUE=127

        基本类型：short 二进制位数：16
        包装类：java.lang.Short
        最小值：Short.MIN_VALUE=-32768
        最大值：Short.MAX_VALUE=32767

        基本类型：int 二进制位数：32
        包装类：java.lang.Integer
        最小值：Integer.MIN_VALUE=-2147483648
        最大值：Integer.MAX_VALUE=2147483647

        基本类型：long 二进制位数：64
        包装类：java.lang.Long
        最小值：Long.MIN_VALUE=-9223372036854775808
        最大值：Long.MAX_VALUE=9223372036854775807

        基本类型：float 二进制位数：32
        包装类：java.lang.Float
        最小值：Float.MIN_VALUE=1.4E-45 // 表示 1.4除以10的-45次幂
        最大值：Float.MAX_VALUE=3.4028235E38 // 表示 3.4028235除以10的38次幂

        基本类型：double 二进制位数：64
        包装类：java.lang.Double
        最小值：Double.MIN_VALUE=4.9E-324 // 表示 4.9除以10的-324次幂
        最大值：Double.MAX_VALUE=1.7976931348623157E308 // 1.7976931348623157乘以10的308次幂

        基本类型：char 二进制位数：16
        包装类：java.lang.Character
        最小值：Character.MIN_VALUE=0
        最大值：Character.MAX_VALUE=65535*/

    }

}
